package schema

import (
	"entgo.io/ent"
	"entgo.io/ent/dialect"
	"entgo.io/ent/schema/field"
	"entgo.io/ent/schema/mixin"
	"time"
)

type AccountStatement struct {
	ent.Schema
}

// Mixin of the AccountStatement
func (AccountStatement) Mixin() []ent.Mixin {
	return []ent.Mixin{
		OperationPerson{},
		mixin.Time{},
	}
}

// business_type code
/**
							  |----首次交存：001
			|----交存：001 ----|----续存：010
收入：01 ----|				  |----分户下账：011
			|
			|----利息：010 ----|----活期利息：001
			|				  |----定期利息：010
			|
			|----经营收入：011--|----经营收入：001
			|
			|----其他：100-----|----定期转入：001
							  |----其他收入：010
							  |----返还维修支出：011



支出：10 ----|----维修支出：001--|----维修支出：001
			|
			|----退款支出：010--|----退回本年交存维修资金：010
            |                 |----退回往年多交存维修资金：011
            |                 |----退房退往年交存维修资金：100
			|				  |----房屋灭失返还维修资金：101
			|-----其他：011----|----定期支出：001
			                  |----其他支出：010
*/

// Fields of the AccountStatement.
func (AccountStatement) Fields() []ent.Field {
	return []ent.Field{
		field.Int64("bank_statement_id").SchemaType(map[string]string{
			dialect.MySQL: "bigint",
		}).Default(0).Comment("银行流水ID"),

		field.Int64("account_id").SchemaType(map[string]string{
			dialect.MySQL: "bigint",
		}).Default(0).Comment("账户ID"),

		field.Int64("estate_id").SchemaType(map[string]string{
			dialect.MySQL: "bigint",
		}).Default(0).Comment("小区ID"),

		field.Int64("house_id").SchemaType(map[string]string{
			dialect.MySQL: "bigint",
		}).Default(0).Comment("房屋ID"),

		field.Int64("business_id").SchemaType(map[string]string{
			dialect.MySQL: "bigint",
		}).Default(0).Comment("业务ID"),

		field.Enum("business_main_type").SchemaType(map[string]string{
			dialect.MySQL: "varchar(32)",
		}).Values("income", "expenditure").Default("income").Comment("业务主类型"),

		field.Enum("business_sub_type").SchemaType(map[string]string{
			dialect.MySQL: "varchar(32)",
		}).Values(
			"pay", "interest",
			"operating-income", "other",
			"maintenance-expenditure", "refund-expenditure",
		).Default("income").Comment("业务主类型"),

		field.Float("amount").SchemaType(map[string]string{
			dialect.MySQL: "decimal(10,2)",
		}).Default(0).Comment("金额"),

		field.Time("statement_time").SchemaType(map[string]string{
			dialect.MySQL: "datetime",
		}).Default(time.Now()).Comment("流水时间"),

		field.String("note").SchemaType(map[string]string{
			dialect.MySQL: "varchar(255)",
		}).Default("").Comment("注释"),
	}
}
